package es.ranking.padel.beans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;

import es.ranking.padel.entidades.Grupo;
import es.ranking.padel.entidades.Jugador;
import es.ranking.padel.servicios.Fachada;

@ManagedBean(name = "datosComunesBean")
@SessionScoped
public class DatosComunesBean implements Serializable {

	private static final long serialVersionUID = 1L;

	@ManagedProperty(value = "#{fachada}")
	private Fachada fachada;

	private List<SelectItem> selectItemGeneros = new ArrayList<SelectItem>();

	private List<SelectItem> selectItemGrupos = new ArrayList<SelectItem>();

	private List<Grupo> listaGrupos = new ArrayList<Grupo>();

	private Map<Integer, Grupo> mapGrupos = new HashMap<Integer, Grupo>();
	
	private Jugador jugadorSeleccionado;

	private void inicializarDatosComunes() {
		selectItemGeneros = fachada.getListadoGenero();
		listaGrupos = fachada.getListadoGrupos();
		selectItemGrupos = generarSelectItemGrupos(listaGrupos);
		mapGrupos = generarMapaGrupos(listaGrupos);
	}

	private Map<Integer, Grupo> generarMapaGrupos(List<Grupo> listaGrupos2) {

		for (Grupo grupo : listaGrupos) {
			mapGrupos.put(grupo.getIdgrupo(), grupo);
		}

		return mapGrupos;
	}

	private List<SelectItem> generarSelectItemGrupos(List<Grupo> listaGrupos) {
		for (Grupo grupo : listaGrupos) {
			selectItemGrupos.add(new SelectItem(grupo, grupo
					.getNombre()));
		}

		return selectItemGrupos;
	}

	public List<SelectItem> getSelectItemGeneros() {
		return selectItemGeneros;
	}

	public void setSelectItemGeneros(List<SelectItem> selectItemGeneros) {
		this.selectItemGeneros = selectItemGeneros;
	}

	public List<SelectItem> getSelectItemGrupos() {
		return selectItemGrupos;
	}

	public void setSelectItemGrupos(List<SelectItem> selectItemGrupos) {
		this.selectItemGrupos = selectItemGrupos;
	}

	public Map<Integer, Grupo> getMapGrupos() {
		return mapGrupos;
	}

	public void setMapGrupos(Map<Integer, Grupo> mapGrupos) {
		this.mapGrupos = mapGrupos;
	}

	public List<Grupo> getListaGrupos() {
		return listaGrupos;
	}

	public void setListaGrupos(List<Grupo> listaGrupos) {
		this.listaGrupos = listaGrupos;
	}

	public Fachada getFachada() {
		return fachada;
	}

	public void setFachada(Fachada fachada) {
		this.fachada = fachada;
		inicializarDatosComunes();
	}

	public Jugador getJugadorSeleccionado() {
		return jugadorSeleccionado;
	}

	public void setJugadorSeleccionado(Jugador jugadorSeleccionado) {
		this.jugadorSeleccionado = jugadorSeleccionado;
	}

}
